-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RP1 PIO support #6470
RP1 PIO support #6470
Conversation
Attempting to start a non-idle channel causes an error message to be logged, and is inefficient. Test for emptiness of the desc_issued list before doing so. Signed-off-by: Phil Elwell <[email protected]>
83e590f
to
8b43487
Compare
The Raspberry Pi RP1 includes 2 M3 cores running firmware. This driver adds a mailbox communication channel to them via a doorbell and some shared memory. Signed-off-by: Phil Elwell <[email protected]>
The RP1 firmware runs a simple communications channel over some shared memory and a mailbox. This driver provides access to that channel. Signed-off-by: Phil Elwell <[email protected]>
Provide remote access to the PIO hardware in RP1. There is a single instance, with 4 state machines. Signed-off-by: Phil Elwell <[email protected]>
Signed-off-by: Phil Elwell <[email protected]>
Declare the communications channel to RP1. Signed-off-by: Phil Elwell <[email protected]>
Declare the device that proxies RP1's PIO hardware. Signed-off-by: Phil Elwell <[email protected]>
The header file linux/pio_rp1.h adds a pico-sdk-like interface to the RP1 PIO subsystem for other drivers. Signed-off-by: Phil Elwell <[email protected]>
Use the PIO hardware on RP1 to implement a PWM interface. Signed-off-by: Phil Elwell <[email protected]>
Enable building of the pwm-pio-rp1 driver, which is Pi 5-specific. Signed-off-by: Phil Elwell <[email protected]>
Add an overlay to enable a single-channel PIO-assisted PWM interface on any header pin. Signed-off-by: Phil Elwell <[email protected]>
Note: I think there's a problem running on the 32-bit OS - probably the missing CONFIG_COMPAT support. |
and when compiling: https://paste.armbian.de/yufeboteja |
That doesn't look like a regular build error - are you installing headers? |
Armbian build automation throws those errors out after this commit. I haven't look closer, but yes, it looks like headers are being installed in the process, line 20030 of paste. And I think they have to work. |
Does the patch in #6472 solve the problem? |
32-bit OS support now resolved by #6476. |
kernel: fixup! misc: Add RP1 PIO driver kernel: misc: rp1-pio: Add compat_ioctl method See: raspberrypi/linux#6470 kernel: configs: enable driver for Vertexcom MSE102X See: raspberrypi/linux#6474 kernel: Add GPS avoidance option to IMX477 See: raspberrypi/linux#6468 kernel: can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration See: raspberrypi/linux#6466
kernel: fixup! misc: Add RP1 PIO driver kernel: misc: rp1-pio: Add compat_ioctl method See: raspberrypi/linux#6470 kernel: configs: enable driver for Vertexcom MSE102X See: raspberrypi/linux#6474 kernel: Add GPS avoidance option to IMX477 See: raspberrypi/linux#6468 kernel: can: mcp251xfd: mcp251xfd_ring_alloc(): fix coalescing configuration See: raspberrypi/linux#6466
See: raspberrypi/linux#6463 kernel: dtoverlays: enable SPI CS active-high See: raspberrypi/linux#6477 kernel: drivers: media: pci: Update Hailo accelerator device driver to v4.19 See: raspberrypi/linux#6478 kernel: misc: rp1-pio: Add FIFO-related methods See: raspberrypi/linux#6470
See: raspberrypi/linux#6463 kernel: dtoverlays: enable SPI CS active-high See: raspberrypi/linux#6477 kernel: drivers: media: pci: Update Hailo accelerator device driver to v4.19 See: raspberrypi/linux#6478 kernel: misc: rp1-pio: Add FIFO-related methods See: raspberrypi/linux#6470
This patch set provides support for accessing the PIO hardware in RP1. Aside from the data FIFOs, the registers are inaccessible over PCIe, so all interactions must be proxied via the RP1 firmware.
The included pwm-pio driver and overlay provides up to 4 PWM channels on arbitrary header pins, and acts as an example of in-kernel usage.
Requires the latest Pi 5 EEPROM image. User-space support and some more examples can be found in the utils repo: raspberrypi/utils#102
(Incorporates #6464.)